var express = require('express')
const path = require('path')
var router = express.Router()
const fs = require('fs')
const { promisify } = require('util')
const multiparty = require('multiparty') // 文件上传
// 改造写文件方法
const writeFile = promisify(fs.writeFile)

/* 图片上传路由 */

//上传图片文件
//
router.post('/', (req, res) => {
  //进行文件上传。
  var form = new multiparty.Form()
  /* 设置编辑 */
  form.encoding = 'utf-8'
  //设置文件存储路劲
  form.uploadDir = path.resolve(__dirname, '../public/images')
  // console.log("dir", form.uploadDir);
  //设置文件大小限制
  form.maxFilesSize = 2 * 1024 * 1024
  // 上传后处理
  if (!fs.existsSync(form.uploadDir)) {
    fs.mkdir(form.uploadDir, function (err) {
      if (err) {
        console.log(err)
      }
    })
  }
  form.parse(req, function (err, fields, files) {
    // 参数名前端发起请求时参数就是files
    console.log('fields', fields) // 提交过来的表单的信息，包括了了表单元素的name属性的值，请求的方式。
    console.log('files', files) //
    if (err) {
      console.log('parse error:' + err)
    } else {
      // console.log(fields)
      var uploadedPath = files.file[0].path
      // console.log('uploadedPath===',uploadedPath);
      // var newfileName = new Date().getMilliseconds() + path.extname(uploadedPath);
      var newfileName =
        path.parse(files.file[0].originalFilename).name +
        '_' +
        new Date().getMilliseconds() +
        path.extname(uploadedPath)
      if (
        path.extname(uploadedPath) == '.jpg' ||
        path.extname(uploadedPath) == '.png' ||
        path.extname(uploadedPath) == '.gif'
      ) {
        var dstPath = form.uploadDir + '/' + newfileName
        console.log(dstPath)
        // //重命名为真实文件名
        fs.rename(uploadedPath, dstPath, function (err) {
          if (err) {
            res.send({ msg: '文件重命名失败', flag: 'no' })
          } else {
            //这里只返回该路径就可以了，因为在app.js文件中已经对静态文件进行了
            res.send({ msg: '/images/' + newfileName, flag: 'ok' })
          }
        })
      } else {
        //不是图片文件，将其删除掉。
        fs.unlink(uploadedPath, function (err) {
          if (err) {
            console.log(err)
          }
        })
        res.send({ msg: '文件只能上传图片', flag: 'no' })
      }
    }
  })
})

module.exports = router
